쿠버네티스 업그레이드 및 유지보수

쿠버네티스 클러스터의 안정적인 운영을 위해서는 정기적인 업그레이드와 유지보수가 필수적입니다.

클러스터 업그레이드 전략

업그레이드 절차 예시

컨트롤 플레인 업그레이드

# 현재 버전 확인
kubectl version --short

# kubeadm 업그레이드 계획 확인
sudo kubeadm upgrade plan

# kubeadm 업그레이드 적용
sudo kubeadm upgrade apply v1.24.0

# 컨트롤 플레인 노드에서 kubelet 및 kubectl 업그레이드
sudo apt-get update
sudo apt-get install -y kubelet=1.24.0-00 kubectl=1.24.0-00
sudo systemctl daemon-reload
sudo systemctl restart kubelet

워커 노드 업그레이드

# 노드 비우기(drain)
kubectl drain <node-name> --ignore-daemonsets

# 노드에서 kubeadm 업그레이드
sudo kubeadm upgrade node

# kubelet 업그레이드 및 재시작
sudo apt-get update
sudo apt-get install -y kubelet=1.24.0-00
sudo systemctl daemon-reload
sudo systemctl restart kubelet

# 노드 다시 스케줄 가능하게 설정
kubectl uncordon <node-name>

etcd 백업 및 복구

etcd 백업 생성

# 인증서 사용하여 etcd 스냅샷 생성
sudo ETCDCTL_API=3 etcdctl snapshot save /backup/etcd-snapshot.db \
  --endpoints=https://127.0.0.1:2379 \
  --cacert=/etc/kubernetes/pki/etcd/ca.crt \
  --cert=/etc/kubernetes/pki/etcd/server.crt \
  --key=/etc/kubernetes/pki/etcd/server.key

etcd 복구

# etcd 중지
sudo systemctl stop etcd

# 스냅샷에서 복구
sudo ETCDCTL_API=3 etcdctl snapshot restore /backup/etcd-snapshot.db \
  --data-dir=/var/lib/etcd-restore

# 복구된 데이터 디렉토리 사용하도록 설정 변경
sudo mv /var/lib/etcd /var/lib/etcd.old
sudo mv /var/lib/etcd-restore /var/lib/etcd

# etcd 재시작
sudo systemctl start etcd

클러스터 유지보수 모범 사례

CKA 시험 관련 중요 포인트